/**
 * @file malloc-free.c
 * @author StudentWeis >> studentweis@gmail.com
 * @brief 数组动态内存分配
 *          - malloc
 *          - free
 * @version 0.1
 * @date 2021-12-29
 *
 * @copyright Copyright (c) 2021
 *
 */

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
    int N = 0;
    int *arr = NULL;
    printf("指针指向 %d\r\n", arr);

    // 动态输入指针大小
    printf("请输入数组的大小。\r\n");
    scanf("%d", &N);

    // 动态分配内存
    arr = (int *)malloc(sizeof(int) * N);
    printf("指针指向 %d\r\n", arr);
    printf("请输入 %d 个数。\r\n", N);
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }

    // 查看变量值
    for (int i = 0; i < N; i++)
    {
        printf("No.%d = %d\r\n", i, arr[i]);
    }

    // 释放内存之后查看变量
    free(arr);
    printf("释放内存。\r\n");
    for (int i = 0; i < N; i++)
    {
        printf("No.%d = %d\r\n", i, arr[i]);
    }
    printf("指针指向 %d\r\n", arr);
    return 0;
}